#include "widget.h"
#include <QApplication>
#include <QDateTime>
#include <QFile>
#include <QIODevice>
#include <QTextStream>

void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    QByteArray localMsg = msg.toLocal8Bit();
    const char *file = context.file ? context.file : "";
    const char *function = context.function ? context.function : "";
    QString text;
    QString currentTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
    switch (type) {
    case QtDebugMsg:
        text = QString("%1 Debug: %2,%3%4%5,%6").arg(currentTime).arg(localMsg.constData()).arg(file).arg(context.line).arg(function).arg(msg);
        break;
    case QtInfoMsg:
        text = QString("%1 Information: %2,%3%4%5,%6").arg(currentTime).arg(localMsg.constData()).arg(file).arg(context.line).arg(function).arg(msg);
         break;
     case QtWarningMsg:
         text = QString("%1 Warning: %2,%3%4%5,%6").arg(currentTime).arg(localMsg.constData()).arg(file).arg(context.line).arg(function).arg(msg);
         break;
     case QtCriticalMsg:
         text = QString("%1 Critical: %2,%3%4%5,%6").arg(currentTime).arg(localMsg.constData()).arg(file).arg(context.line).arg(function).arg(msg);
         break;
     case QtFatalMsg:
         text = QString("%1 Fatal: %2,%3%4%5,%6").arg(currentTime).arg(localMsg.constData()).arg(file).arg(context.line).arg(function).arg(msg);
         break;
     }
    QFile file_("./log.txt");
    file_.open(QIODevice::WriteOnly | QIODevice::Append);
    QTextStream textStream(&file_);
    textStream << text << endl;
 }


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    qInstallMessageHandler(myMessageOutput);
    Widget w;
    w.show();

    return a.exec();
}
